home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / 8bit / cislib_a / basic.asm < prev    next >
Assembly Source File  |  1995-04-22  |  3KB  |  121 lines

  1.  
  2. 00010 ;SAVE"D:BASIC.SYN 
  3. 00020          .LI OFF 
  4. 00030 ; This program checks the OS/A+ 
  5. 00040 ; command input buffer, and 
  6. 00050 ; then either removes or 
  7. 00060 ; installs the BASIC rom on 
  8. 00070 ; XL series computers.  It 
  9. 00080 ; does this by setting BASICF 
  10. 00090 ; then executing a warmstart, 
  11. 00100 ; to reset the OS variables for 
  12. 00110 ; the correct RAM size. 
  13. 00120 ; 
  14. 00130 ; TYPE: 
  15. 00140 ;       BASIC I for BASIC in. 
  16. 00150 ;       BASIC O for BASIC out. 
  17. 00160 ; 
  18. 00170 ****************************** 
  19. 00180 *  Daniel L. Moore 03/17/84  * 
  20. 00190 ****************************** 
  21. 00200 ; 
  22. 00210 BOOT     .EQ $9 
  23. 00220 DOSVEC   .EQ $A 
  24. 00230 DOSINI   .EQ $C 
  25. 00240 ; 
  26. 00250 LOADFLG  .EQ $CA rev A,B BASIC 
  27. 00260 ; 
  28. 00270 VECTMP   .EQ $D4  FP register 0 
  29. 00280 INITMP   .EQ $D6 
  30. 00290 ; 
  31. 00300 BASICF   .EQ $3F8 
  32. 00310 ; 
  33. 00320 DOSINIT  .EQ $7E0 for FMS v.2 
  34. 00330 ; OS/A+ equates. 
  35. 00340 CPBUFP   .EQ $A   next char. 
  36. 00350 CPCMDB   .EQ $3F  command buff. 
  37. 00360 ; 
  38. 00370          .OR $4000 
  39. 00380 ; 
  40. 00390 ; Test for XL series computer 
  41. 00400 START    LDA $FCD8 
  42. 00410          CMP #$A2 
  43. 00420          BEQ DOS 
  44. 00430 ; Save run vector 
  45. 00440          LDA DOSVEC 
  46. 00450          STA VECTMP 
  47. 00460          LDA DOSVEC+1 
  48. 00470          STA VECTMP+1 
  49. 00480 ; Save init vector. 
  50. 00490          LDA DOSINI 
  51. 00500          STA INITMP 
  52. 00510          LDA DOSINI+1 
  53. 00520          STA INITMP+1 
  54. 00530 ; Check the command input 
  55. 00540 ; buffer for an 'I or 'O. 
  56. 00550          LDX #1 assume OUT 
  57. 00560          LDY #CPBUFP 
  58. 00570          LDA (DOSVEC),Y 
  59. 00580          CLC 
  60. 00590          ADC #CPCMDB+1 
  61. 00600          TAY 
  62. 00610          LDA (DOSVEC),Y 
  63. 00620          CMP #'O       out? 
  64. 00630          BEQ SET.IT 
  65. 00640          DEX 
  66. 00650          CMP #'I       in? 
  67. 00660          BEQ SET.IT 
  68. 00670 ; Not 'I or 'O, exit to CP/A. 
  69. 00680          RTS 
  70. 00690 ; Set BASIC in/out. 
  71. 00700 SET.IT   STX BASICF 
  72. 00710          LDA #$32  clear cmnd 
  73. 00720          STA (DOSVEC),Y 
  74. 00730 ; Set init/run vector to 
  75. 00740 ; continuation code. 
  76. 00750          LDA #CONT 
  77. 00760          STA DOSVEC 
  78. 00770          STA DOSINI 
  79. 00780          LDA /CONT 
  80. 00790          STA DOSVEC+1 
  81. 00800          STA DOSINI+1 
  82. 00810 ; Set BOOT to succesfull disk 
  83. 00820 ; boot so SynAssembler will not 
  84. 00830 ; attempt to run. 
  85. 00840          LDA #01 
  86. 00850          STA BOOT 
  87. 00860 ; Let the OS switch BASIC, 
  88. 00870 ; reset the memory size, and 
  89. 00880 ; open E: at the new RAMTOP. 
  90. 00890          JMP $E474   Warmstart 
  91. 00900 ; 
  92. 00910 ; Restore init/run vectors. 
  93. 00920 CONT     LDA VECTMP 
  94. 00930          STA DOSVEC 
  95. 00940          LDA VECTMP+1 
  96. 00950          STA DOSVEC+1 
  97. 00960          LDA INITMP 
  98. 00970          STA DOSINI 
  99. 00980          LDA INITMP+1 
  100. 00990          STA DOSINI+1 
  101. 01000 ; Init DOS ($7E0 for FMS.) 
  102. 01010 ; If you are running OS/A+ v.4 
  103. 01020 ; add DOSINIT JMP (DOSINI) 
  104. 01030 ; after the label DOS, and 
  105. 01040 ; delete the DOSINIT equate 
  106. 01050 ; above. 
  107. 01060          JSR DOSINIT 
  108. 01070 ; If BASIC IN, then set BASIC 
  109. 01080 ; 'load in progress' flag, so 
  110. 01090 ; all BASIC work areas will be 
  111. 01100 ; cleared.  (force a NEW) 
  112. 01110          LDA BASICF 
  113. 01120          BNE DOS 
  114. 01130          LDA #$FF 
  115. 01140          STA LOADFLG 
  116. 01150 ; Return to DOS. 
  117. 01160 DOS      JMP (DOSVEC) 
  118. 01170 ; 
  119. 01180 ; 
  120. 01190 END      .LI ON 
  121.